﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using VisaApp.Models;
using Visa.Common.MvcContronller;
using Visa.DB;
using Visa.Service;

namespace VisaApp.Controllers
{
    public class VisaController : UTController
    {

        private VisaService visaSV = new VisaService();
        private QuocGiaService QuocGiaSv = new QuocGiaService();
        private ThongtinhuuService ThongtinhuuichSv = new ThongtinhuuService();
        //
        // GET: /Visa/

        public ActionResult Index()
        {
            return View();
        }

        public ActionResult FromVisa(string codechau, int idQuocgia)
        {
            VisaResModel model = new VisaResModel();
            model.regioncode = codechau;
            model.quocgiaid = idQuocgia;
            return PartialView("_FromVisa", model);
        }

        [HttpPost]
        public ActionResult FromVisa(VisaResModel model, string CaptchaValue, string InvisibleCaptchaValue)
        {
            //if (string.IsNullOrEmpty(model.Quoctich))
            //{
            //    return JsonError(" Vui lòng nhập quốc tịch của bạn vào ");
            //}

            if (string.IsNullOrEmpty(model.visadencacnuoc))
            {
                return JsonError(" Vui lòng chọn ít nhất 1 nước mà bạn cần tư vấn ");
            }
            if (model.visadencacnuoc == "Chọn Quốc gia")
            {
                return JsonError(" Vui lòng chọn ít nhất 1 nước mà bạn cần tư vấn ");
            }
            if (string.IsNullOrEmpty(model.HoTen))
            {
                return JsonError(" Vui lòng nhập họ và tên của bạn vào");
            }

            if (string.IsNullOrEmpty(model.Email))
            {
                return JsonError(" Vui lòng nhập email của bạn vào ");
            }

            if (!IsValidEmailAddress(model.Email))
            {
                return JsonError("Email bạn nhập vào sai cú pháp ");
            }

            if (string.IsNullOrEmpty(model.Dt))
            {
                return JsonError(" Vui lòng nhập số điện thoại di dộng hoặc nhà của bạn vào ");
            }

            if (!IsNumber(model.Dt))
            {
                return JsonError(" Số điện thoại phải là số , không có ký tự trắng hoặc chữ ");
            }

            if (string.IsNullOrEmpty(model.NoiDung))
            {
                return JsonError(" Vui lòng nhập nội dung vào ");
            }

            bool cv = CaptchaController.IsValidCaptchaValue(CaptchaValue.ToUpper());
            bool icv = InvisibleCaptchaValue == "";

            if (!cv || !icv)
            {
                return JsonError("mã xác nhận không đúng, vui lòng nhập lại");
            }

            model.DateCreate = DateTime.Now;
            model.Detele = false;
            model.Status = false;
            model.Id = -1;
            model.Type = false;
            VisaRe visaentity = new VisaRe();
            VisaResModel.MapFrom(model, ref visaentity);
            visaSV.addOrUpdateVisa(visaentity);
            return JsonSuccess(null, null);

        }

        public ActionResult KhuVucDetails(string code, string name)
        {
            ChauLucModel model = new ChauLucModel();
            var c = QuocGiaSv.GetChauLucByCode(code);
            ChauLucModel.MapFrom(c, ref model);
            model.listQG = new List<QuocGiaModel>();
            var cQg = QuocGiaSv.GetListQuocGia(code);

            foreach (var item in cQg)
            {
                QuocGiaModel ml = new QuocGiaModel();
                QuocGiaModel.MapFrom(item, ref ml);
                model.listQG.Add(ml);
            }

            return View(model);
        }

        public ActionResult DatNuocDetails(string namekhuvuc, string quocgia, string regioncode, int quocgiaid)
        {
            QuocGiaModel model = new QuocGiaModel();
            ChauLucModel mlCl = new ChauLucModel();
            model.chaulucMode = new ChauLucModel();
            model.chaulucMode.listQG = new List<QuocGiaModel>();
            var c = QuocGiaSv.getQuocGiaById(quocgiaid);
            QuocGiaModel.MapFrom(c, ref model);

            var cCl = QuocGiaSv.GetChauLucByCode(c.regioncode);
            ChauLucModel.MapFrom(cCl, ref  mlCl);
            model.chaulucMode = mlCl;

            model.chaulucMode.listQG = new List<QuocGiaModel>();
            var cQg = QuocGiaSv.GetListQuocGia(c.regioncode);

            foreach (var item in cQg)
            {
                QuocGiaModel ml = new QuocGiaModel();
                QuocGiaModel.MapFrom(item, ref ml);
                model.chaulucMode.listQG.Add(ml);
            }

            return View(model);

        }

        public ActionResult GetAllChauLucKhac(string region)
        {
            List<ChauLucModel> model = new List<ChauLucModel>();
            var c = QuocGiaSv.GetListChauLuc().Where(p => p.regioncode != region).ToList();
            foreach (var g in c)
            {
                ChauLucModel ml = new ChauLucModel();
                ChauLucModel.MapFrom(g, ref ml);
                model.Add(ml);
            }
            return PartialView("_GetAllChauLucKhac", model);
        }

        //ajax
        public ActionResult AllQuocGiaByCateid(int code)
        {

            string CodeChange = code.ToString();
            if (CodeChange.Length == 1)
            {
                CodeChange = "00" + CodeChange;
            }
            else if (CodeChange.Length == 2)
            {
                CodeChange = "0" + CodeChange;
            }

            var categories = new List<QuocGia>();
            categories.Add(new QuocGia{ Id = -1, Name = "Chọn Quốc gia" });
            var cD =  QuocGiaSv.GetQuocGiaByCode(CodeChange);
            categories.AddRange(cD);
            var selectList = new List<SelectListItem>();
            foreach (var c in categories)
                selectList.Add(new SelectListItem()
                {
                    Value = c.Id.ToString(),
                    Text = c.Name,
                    Selected = false
                });

            return new JsonResult { Data = selectList, JsonRequestBehavior = JsonRequestBehavior.AllowGet };
        }

        public ActionResult GetInfoQuocGia(int id)
        {
            ThongtinhuuichModel model = new ThongtinhuuichModel();
            try
            {
                var c = ThongtinhuuichSv.GetAllThongtinhuichByQuocGiaID(id).First();
                if (c != null)
                {
                    ThongtinhuuichModel.MapFrom(c, ref model);
                }
            }
            catch { }
            return PartialView("_GetInfoQuocGia",model);
        }

        public ActionResult GetInfoHoiDap(string region, int id)
        {
            return PartialView();
        }


    }
}
